Skip to content

Ajustes pós-pull: correções de bugs e configuração de ambiente#115

Open
Rossi-Luciano wants to merge 4 commits into
scieloorg:mainfrom
Rossi-Luciano:fix-post-pull-adjustments
Open

Ajustes pós-pull: correções de bugs e configuração de ambiente#115
Rossi-Luciano wants to merge 4 commits into
scieloorg:mainfrom
Rossi-Luciano:fix-post-pull-adjustments

Conversation

@Rossi-Luciano
Copy link
Copy Markdown
Contributor

Contexto

Após o merge das branches add-xref-linking e mudanças na main (que removeu campos do modelo ArticleDocxMarkup e criou o model Issue), surgiram três problemas que impediam o processamento de artigos.


Mudanças

1. Migration de merge (markup_doc/migrations/0005_merge_20260602_1323.py)

As migrations 0003_remove_articledocxmarkup_dateiso_and_more (main) e 0004_articledocxmarkup_xref_status (add-xref-linking) foram criadas a partir do mesmo ancestral, gerando conflito no grafo de migrations. A migration de merge resolve o conflito sem alterar o banco de dados.

2. markup_doc/xml.py — remoção de referência a campo inexistente

O campo dateiso foi removido de ArticleDocxMarkup pela migration 0003, mas get_xml() ainda o referenciava para gerar o elemento <pub-date>, causando AttributeError em toda task de geração de XML. O bloco foi removido — a data de publicação da issue já é tratada via issue.year e issue.month no bloco imediatamente anterior.

3. markuplib/function_docx.py — correção de IndexError

Quando o parágrafo de introdução era encontrado antes de qualquer seção registrada, sections estava vazia e sections[-1] lançava IndexError, abortando o processamento do DOCX. Corrigido com guard if sections else [].

4. config/settings/base.py e local.yml — ajuste de conexões PostgreSQL

Com Celery rodando 16 workers prefork, o limite padrão de 100 conexões do PostgreSQL era esgotado, causando FATAL: sorry, too many clients already. Duas correções complementares:

  • CONN_MAX_AGE = 0 no Django para fechar conexões ao fim de cada request
  • max_connections=200 no serviço postgres do local.yml

Testes

Os bugs foram reproduzidos e confirmados resolvidos com o reprocessamento de três artigos reais obtidos do Google Drive (pasta de artigos SciELO em produção), selecionados para cobrir as principais variações estruturais do pipeline:

bn-2025-1828.docx — Biota Neotropica (artigo bilíngue PT/EN)

  • Título em inglês com <trans-title> em português
  • <abstract> em inglês com <trans-abstract> em português
  • 8 autores, 7 com ORCID
  • 2 afiliações institucionais
  • 3 tabelas de dados fitossociológicos
  • 95 referências (mixed-citation)
  • DOI: 10.1590/1676-0611-BN-2025-1828

Cobre o fluxo de artigos bilíngues, forçando a detecção de idioma e a geração de blocos <trans-title> e <trans-abstract>.

rbent-2025-0077.docx — Revista Brasileira de Entomologia (artigo em inglês)

  • Título e abstract exclusivamente em inglês (sem traduções)
  • 7 autores, 6 com ORCID, em 3 instituições distintas
  • Palavras-chave em lista separada do abstract
  • 2 tabelas de dados populacionais e estatísticos
  • 49 referências (mixed-citation)
  • DOI: 10.1590/1806-9665-RBENT-2025-0077

Complementa o anterior cobrindo o fluxo monolíngue, validando que o pipeline não gera elementos de tradução vazios quando não há conteúdo bilíngue, e exercitando o parser de <kwd-group> num formato de lista separada.

mr-2025-0709.docx — Materials Research (artigo com figuras)

  • Título e abstract em inglês
  • 3 autores, em 2 instituições
  • 10 figuras JPEG embutidas (micrografias ópticas, análise SEM, gráficos de dureza e corrosão — de 26 KB a 690 KB)
  • 2 tabelas de propriedades mecânicas
  • DOI: 10.1590/1980-5373-MR-2025-0709

Único fixture com imagens embutidas, cobrindo o caminho de código responsável por detectar w:drawing no XML do DOCX, persistir cada imagem como ImageModel no Wagtail e gerar os 10 elementos <fig> (f1f10) no XML final.


Os três artigos, juntos, cobrem as principais variações estruturais do pipeline:

Aspecto bn-2025-1828 rbent-2025-0077 mr-2025-0709
Idiomas PT + EN EN EN
trans-title / trans-abstract Sim Não Não
Figuras 0 0 10
Tabelas 3 2 2
Referências 95 49
Keywords separadas Não Sim Não

🤖 Generated with Claude Code

Rossi-Luciano and others added 4 commits June 2, 2026 12:38
As migrations 0003_remove_articledocxmarkup_dateiso_and_more (main) e
0004_articledocxmarkup_xref_status (add-xref-linking) foram criadas a
partir do mesmo ancestral 0002, gerando dois nós folha conflitantes no
grafo de migrations. A migration de merge resolve o conflito sem alterar
o banco de dados.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
O campo dateiso foi excluído de ArticleDocxMarkup pela migration
0003_remove_articledocxmarkup_dateiso_and_more, mas get_xml() ainda o
referenciava para gerar pub-date, causando AttributeError em toda task
de geração de XML. A data de publicação da issue agora vem de
issue.year e issue.month, já tratados no bloco anterior.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Quando o parágrafo de introdução era o primeiro elemento a registrar
uma seção no documento, a lista sections ainda estava vazia no momento
em que extractContent tentava acessar sections[-1] para criar o
first_block. Adicionado guard para retornar lista vazia quando sections
não tem elementos.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
CONN_MAX_AGE = 0 força o Django a fechar conexões após cada request,
evitando acúmulo que esgotava o limite do banco. max_connections=200
no serviço postgres do docker-compose local acomoda os 16 workers
prefork do Celery mais as conexões do Django sem atingir o limite
padrão de 100.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Rossi-Luciano Rossi-Luciano requested a review from gitnnolabs June 2, 2026 17:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant